package book;

import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import common.DBManager;

public class ReturnServlet extends HttpServlet {

	Connection connection=null;
	Statement statement=null;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
	{

		req.setCharacterEncoding("UTF-8");
		resp.setContentType("text/html; charset=UTF-8");
		returnInfo(req,resp);

	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
	{

		req.setCharacterEncoding("UTF-8");
		resp.setContentType("text/html; charset=UTF-8");
		returnInfo(req,resp);

	}

	protected void returnInfo(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
	{

		String message 	= null;																			//	メッセージ
		String book_id = req.getParameter("book_id");
		String user_id = req.getParameter("user_id");
		String rental_id = req.getParameter("rental_id");



		//		貸出IDが空の場合
		//		メッセージに、「貸出中の書籍が見つかりません。」をセットし、書籍返却画面に遷移する。
		if (rental_id == null || rental_id.length() < 1) {
			message = "貸出情報が見つかりません。";
		}

		//		貸出書籍IDが空の場合
		//		メッセージに、「貸出中の書籍情報が見つかりません。」をセットし、書籍返却画面に遷移する。
		if (book_id == null || book_id.length() < 1) {
			message = "貸出中の書籍情報が見つかりません。";
		}

		else {
			//	rental_idが一致するレコードを全て更新する。
			//	book_idが一致するレコードを全て更新する。
			//	削除フラグを「１」にする。
			try
			{
				connection=DBManager.getConnection();
				connection.setAutoCommit(false);
				statement=connection.createStatement();

				statement.executeUpdate("DELETE from rentals WHERE id = '" + rental_id + "'");
				statement.executeUpdate("UPDATE books SET rental_id = null WHERE id = '" + book_id + "'");

				connection.commit();

			}
			catch (SQLException e)
			{
				System.out.println(e);
			}
			catch(Exception e)
			{
				System.out.println(e);
			}
			finally
			{
				if(statement!=null)
				{
					try
					{
						statement.close();
					}
					catch (SQLException e)
					{
						e.printStackTrace();
					}
				}

				if(connection!=null)
				{
					try
					{
						connection.close();
					}
					catch (SQLException e)
					{
						e.printStackTrace();
					}
				}
			}
			req.setAttribute("msg", message);

			//	書籍返却画面へ遷移する。

			//resp.sendRedirect("/Books/book/ReturnEntryServlet");
			RequestDispatcher requestDispatcher=req.getRequestDispatcher("/book/ReturnEntryServlet?id=" + user_id);
			requestDispatcher.forward(req, resp);

		}
	}

}
